1. Field of the Invention
The present invention is directed to technology for monitoring applications.
2. Description of the Related Art
As the Internet's popularity grows, more businesses are establishing a presence on the Internet. These businesses typically set up web sites that run one or more web applications. One disadvantage of doing business on the Internet is that if the web site goes down, becomes unresponsive or otherwise is not properly serving customers, the business is losing potential sales and/or customers. Similar issues exist with Intranets and Extranets. Thus, there is a need to monitor live web applications and web sites to make sure that they are running properly.
One means for monitoring live web applications includes the use of a performance analysis tool. Performance analysis tools are used to debug software and to analyze an application's run time execution. Many performance analysis tools provide timing data on how long each method (or procedure or other process) is being executed, report how many times each method is executed and/or identify the function call architecture. Some of the tools provide their results in text files or on a monitor. Other tools graphically display their results.
One problem with existing performance analysis tools is that they provide too much data so that the user of the tool is overwhelmed. The user of a performance analysis tool has the difficult task of analyzing the multitude of data to determine which data is relevant and which data is not relevant (e.g. redundant or otherwise not useful). Once the user determines which data is relevant, the user can then analyze the relevant data to learn about the software being monitored.
Another problem with existing performance analysis tools is that they require too much overhead. Many performance analysis tools will instrument existing source code or object code to add the functionality of the performance analysis tool. For example, a performance analysis tool monitoring a Java application may instrument a large number of methods in the software in order to be able to analyze the performance of each method. However, modifying a large number of methods may add an enormous amount of code to the software and may impact performance of the underlying software.